ARMA/ARIMA/SARIMA Models
Stationarity, Differencing, Model Fitting, Diagnostics, Forcasting, and Validation
ARIMA - Economic Indicator
I choose the ARIMA model for forecasting economic indicators because it’s useful for forecasting a series where the data points are independent of the seasonal components, which is the case with the economic indicators such as CPI, GDP, USD index, unemployment rate, and mortgage rate. These indicators typically have underlying trends or cycles that ARIMA can address through differencing, making the data stationary before applying auto-regressive and moving average components to capture the relationships in the data.
Data Processing
Stationarity Check
Initial assessments via ACF and Augmented Dickey-Fuller tests indicated that CPI required differencing due to non-stationarity. After converting to a time series and applying logarithmic transformation, first differencing was insufficient in detrending, but second differencing indicated stationarity.
Augmented Dickey-Fuller Test Results:
Test Statistic: -0.8219849 P-value: 0.959648
The time series is not stationary based on the ADF test.
Model Fitting
After second differencing CPI, ACF shows three lags, while PACF shows four. This suggests ARIMA parameters p = [0,1,2,3], d = [2], q = [0,1,2]. I’ll test these for the lowest AIC, BIC, and AICc, and cross-check with auto.arima to forecasting.
p d q AIC BIC AICc
1 0 2 0 -7964.774 -7959.951 -7964.769
2 0 2 1 -8187.294 -8177.650 -8187.281
3 0 2 2 -8242.219 -8227.752 -8242.193
4 1 2 0 -8055.798 -8046.154 -8055.785
5 1 2 1 -8241.533 -8227.066 -8241.507
6 1 2 2 -8241.209 -8221.920 -8241.165
7 2 2 0 -8126.439 -8111.973 -8126.413
8 2 2 1 -8241.021 -8221.732 -8240.977
9 2 2 2 -8239.420 -8215.309 -8239.354
10 3 2 0 -8156.962 -8137.673 -8156.918
11 3 2 1 -8239.300 -8215.189 -8239.234
12 3 2 2 -8246.314 -8217.381 -8246.222
Model fitting with minimum AIC:
3, 2, 2, -8246.31447088773, -8217.381286544, -8246.2222645211
Model fitting with minimum AICc:
3, 2, 2, -8246.31447088773, -8217.381286544, -8246.2222645211
Model fitting with minimum BIC:
0, 2, 2, -8242.21881165827, -8227.75221948641, -8242.19255345258
Series: ts
ARIMA(1,2,1)(2,0,0)[12]
Coefficients:
ar1 ma1 sar1 sar2
0.2957 -0.8775 -0.2088 -0.1736
s.e. 0.0413 0.0217 0.0347 0.0362
sigma^2 = 6.977e-06: log likelihood = 4149.36
AIC=-8288.72 AICc=-8288.66 BIC=-8264.61
Model Diagnostics
The ARIMA(3,2,2) model exhibits a satisfactory fit, evident from the patternless residuals and lack of autocorrelation, but its coefficients are not all statistically significant. In contrast, the ARIMA(0,2,2) model, while equally displaying white noise residuals and minimal autocorrelation, boasts statistically significant coefficients, lending greater weight to its predictive accuracy. The SARIMA(1,2,1)(2,0,0)[12] also presents a strong fit, confirmed by its residuals and significant p-values, and it outperforms the ARIMA(0,2,2) model in terms of lower AIC, BIC, and AICc values. Nonetheless, the simpler ARIMA(0,2,2) is preferred due to its adequate fit and less complexity. Both models are considered robust, with the choice between them hinging on the trade-off between simplicity and statistical thoroughness.
**************************************************************************
**************************************************************************
**************************************************************************
ARIMA(3,2,2):
initial value -5.780467
iter 2 value -5.891674
iter 3 value -5.907543
iter 4 value -5.912536
iter 5 value -5.915068
iter 6 value -5.916815
iter 7 value -5.917127
iter 8 value -5.917161
iter 9 value -5.917183
iter 10 value -5.917240
iter 11 value -5.917443
iter 12 value -5.918386
iter 13 value -5.918952
iter 14 value -5.919150
iter 15 value -5.919410
iter 16 value -5.919542
iter 17 value -5.919619
iter 18 value -5.919813
iter 19 value -5.920216
iter 20 value -5.921607
iter 21 value -5.923292
iter 22 value -5.924930
iter 23 value -5.926276
iter 24 value -5.927671
iter 25 value -5.927976
iter 26 value -5.928484
iter 27 value -5.928495
iter 28 value -5.928883
iter 29 value -5.929187
iter 30 value -5.929601
iter 31 value -5.930039
iter 32 value -5.930560
iter 33 value -5.930828
iter 34 value -5.930967
iter 35 value -5.931038
iter 36 value -5.931050
iter 37 value -5.931054
iter 37 value -5.931054
final value -5.931054
converged
initial value -5.912816
iter 2 value -5.912840
iter 3 value -5.913011
iter 4 value -5.913090
iter 5 value -5.913144
iter 6 value -5.913184
iter 7 value -5.913272
iter 8 value -5.913464
iter 9 value -5.913743
iter 10 value -5.914388
iter 11 value -5.914622
iter 12 value -5.915632
iter 13 value -5.915658
iter 14 value -5.915698
iter 15 value -5.915748
iter 16 value -5.915912
iter 17 value -5.916262
iter 18 value -5.916392
iter 19 value -5.916708
iter 20 value -5.916835
iter 21 value -5.916916
iter 22 value -5.916925
iter 23 value -5.916927
iter 24 value -5.916927
iter 25 value -5.916930
iter 26 value -5.916931
iter 27 value -5.916931
iter 27 value -5.916931
iter 27 value -5.916931
final value -5.916931
converged
$fit
Call:
arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S),
include.mean = !no.constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc,
REPORT = 1, reltol = tol))
Coefficients:
ar1 ar2 ar3 ma1 ma2
1.1965 -0.3280 0.0728 -1.7608 0.7647
s.e. 0.0650 0.0541 0.0367 0.0567 0.0545
sigma^2 estimated as 7.243e-06: log likelihood = 4129.16, aic = -8246.31
$degrees_of_freedom
[1] 913
$ttable
Estimate SE t.value p.value
ar1 1.1965 0.0650 18.4168 0.0000
ar2 -0.3280 0.0541 -6.0621 0.0000
ar3 0.0728 0.0367 1.9823 0.0477
ma1 -1.7608 0.0567 -31.0300 0.0000
ma2 0.7647 0.0545 14.0428 0.0000
$AIC
[1] -8.982913
$AICc
[1] -8.982842
$BIC
[1] -8.951396
**************************************************************************
ARIMA(0,2,2):
initial value -5.758140
iter 2 value -5.863065
iter 3 value -5.909828
iter 4 value -5.910974
iter 5 value -5.911802
iter 6 value -5.911847
iter 7 value -5.911847
iter 7 value -5.911847
iter 7 value -5.911847
final value -5.911847
converged
initial value -5.911431
iter 2 value -5.911431
iter 3 value -5.911432
iter 3 value -5.911432
iter 3 value -5.911432
final value -5.911432
converged
$fit
Call:
arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S),
include.mean = !no.constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc,
REPORT = 1, reltol = tol))
Coefficients:
ma1 ma2
-0.5605 -0.2529
s.e. 0.0317 0.0330
sigma^2 estimated as 7.327e-06: log likelihood = 4124.11, aic = -8242.22
$degrees_of_freedom
[1] 916
$ttable
Estimate SE t.value p.value
ma1 -0.5605 0.0317 -17.7039 0
ma2 -0.2529 0.0330 -7.6707 0
$AIC
[1] -8.978452
$AICc
[1] -8.978438
$BIC
[1] -8.962693
**************************************************************************
auto.arima (1,2,1)(2,0,0)[12]:
initial value -5.855766
iter 2 value -5.931096
iter 3 value -5.949949
iter 4 value -5.961356
iter 5 value -5.990703
iter 6 value -6.008407
iter 7 value -6.017910
iter 8 value -6.022383
iter 9 value -6.022796
iter 10 value -6.023102
iter 11 value -6.023114
iter 12 value -6.023116
iter 12 value -6.023116
iter 12 value -6.023116
final value -6.023116
converged
initial value -5.937579
iter 2 value -5.938757
iter 3 value -5.938837
iter 4 value -5.938930
iter 5 value -5.938939
iter 6 value -5.938940
iter 6 value -5.938940
iter 6 value -5.938940
final value -5.938940
converged
$fit
Call:
arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S),
include.mean = !no.constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc,
REPORT = 1, reltol = tol))
Coefficients:
ar1 ma1 sar1 sar2
0.2957 -0.8775 -0.2088 -0.1736
s.e. 0.0413 0.0217 0.0347 0.0362
sigma^2 estimated as 6.926e-06: log likelihood = 4149.36, aic = -8288.72
$degrees_of_freedom
[1] 914
$ttable
Estimate SE t.value p.value
ar1 0.2957 0.0413 7.1618 0
ma1 -0.8775 0.0217 -40.4427 0
sar1 -0.2088 0.0347 -6.0251 0
sar2 -0.1736 0.0362 -4.7917 0
$AIC
[1] -9.029109
$AICc
[1] -9.029062
$BIC
[1] -9.002845
**************************************************************************
Series: ts
ARIMA(0,2,2)
Coefficients:
ma1 ma2
-0.5605 -0.2529
s.e. 0.0317 0.0330
sigma^2 = 7.364e-06: log likelihood = 4124.11
AIC=-8242.22 AICc=-8242.19 BIC=-8227.75
Training set error measures:
ME RMSE MAE MPE MAPE
Training set -2.196212e-05 0.0027077 0.001861392 -0.0006268637 0.04498296
MASE ACF1
Training set 0.0528366 0.0009203494
Equation for ARIMA(0,2,2)v:
\[(1 - B)^2 X_t = (1 + \theta_1 B + \theta_2 B^2) W_t\]
Forecasting
The graph depicts the predicted logarithm of CPI over time, extending from historical data into future projections. The black line represents the actual historical log(CPI) values, showing a general upward trend over time, which indicates that the CPI has been increasing. The blue shaded area starting around 2020 represents the forecasted values, with the shade indicating the confidence interval of the predictions.
Benchmark Method
The ARIMA model forecasts (red line) are closest to the actual data, indicating a superior fit among the methods. Accuracy metrics support this, with ARIMA showing the lowest error rates across the board, suggesting high precision and minimal bias in forecasting. Other models like the Mean, Naive, and Seasonal Naive exhibit higher errors, indicating less accurate predictions. The Drift model performs better than these but is still outclassed by ARIMA. Overall, ARIMA is identified as the best model for forecasting CPI in this case.
ARIMA Model Accuracy Metrics:
ME RMSE MAE MPE MAPE
Training set -2.196212e-05 0.0027077 0.001861392 -0.0006268637 0.04498296
MASE ACF1
Training set 0.0528366 0.0009203494
Mean Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set -9.418417e-18 0.8627205 0.7913189 -4.129501 19.08201 22.46201
ACF1
Training set 0.9974046
Naive Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set 0.002891558 0.004483797 0.003403071 0.06783973 0.08035247 0.096598
ACF1
Training set 0.5749759
Seasonal Naive Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set 0.03439707 0.04412258 0.03522921 0.7988339 0.8224095 1
ACF1
Training set 0.9848684
Random Walk with Drift Model Accuracy Metrics:
ME RMSE MAE MPE MAPE
Training set 1.391738e-16 0.003426854 0.002408751 0.0001517385 0.05821684
MASE ACF1
Training set 0.0683737 0.5749759
Model with the best Accuracy Metrics:
ARIMA ARIMA ARIMA Mean ARIMA ARIMA ARIMA
Data Processing
Stationarity Check
Initial assessments via ACF and Augmented Dickey-Fuller tests indicated that GDP required differencing due to non-stationarity. After converting to a time series and applying logarithmic transformation, first differencing was insufficient in detrending, but second differencing indicated stationarity.
Augmented Dickey-Fuller Test Results:
Test Statistic: -1.049504 P-value: 0.929467
The time series is not stationary based on the ADF test.
Model Fitting
After second differencing GDP, ACF shows one significant lag, while PACF shows five. This suggests ARIMA parameters p = [1,2,3,4,5], d = [1,2], q = [1]. I’ll test these for the lowest AIC, BIC, and AICc, and cross-check with auto.arima to forecasting.
p d q AIC BIC AICc
1 1 1 1 -1871.924 -1857.043 -1871.791
2 1 2 1 -1861.148 -1849.997 -1861.068
3 2 1 1 -1871.483 -1852.881 -1871.282
4 2 2 1 -1861.697 -1846.829 -1861.563
5 3 1 1 -1871.070 -1848.748 -1870.788
6 3 2 1 -1860.092 -1841.507 -1859.891
7 4 1 1 -1869.752 -1843.710 -1869.375
8 4 2 1 -1859.721 -1837.419 -1859.438
9 5 1 1 -1867.887 -1838.124 -1867.400
10 5 2 1 -1858.660 -1832.640 -1858.281
Model fitting with minimum AIC:
1, 1, 1, -1871.92391061098, -1857.04266350455, -1871.79057727765
Model fitting with minimum AICc:
1, 1, 1, -1871.92391061098, -1857.04266350455, -1871.79057727765
Model fitting with minimum BIC:
1, 1, 1, -1871.92391061098, -1857.04266350455, -1871.79057727765
Series: ts
ARIMA(0,2,3)(1,0,1)[4]
Coefficients:
ma1 ma2 ma3 sar1 sma1
-0.8748 -0.0010 -0.1093 -0.6082 0.5539
s.e. 0.0572 0.0756 0.0562 0.3597 0.3727
sigma^2 = 0.0001251: log likelihood = 935.79
AIC=-1859.59 AICc=-1859.31 BIC=-1837.29
Model Diagnostics
The first ARIMA model (1,1,1) shows a good fit with the lowest information criteria scores, indicating effective parameter use. The residuals suggest the model captures the data’s underlying process well. The second model, which appears to be a SARIMA given the seasonal components, is more complex and doesn’t offer a significantly better fit, as the information criteria scores are marginally higher and some coefficients are not statistically significant. The first model is preferable for its simplicity and performance.
**************************************************************************
**************************************************************************
ARIMA(1,1,1):
initial value -4.489124
iter 2 value -4.494637
iter 3 value -4.497303
iter 4 value -4.497428
iter 5 value -4.499701
iter 6 value -4.500276
iter 7 value -4.500679
iter 8 value -4.500764
iter 9 value -4.500774
iter 10 value -4.500792
iter 11 value -4.500792
iter 12 value -4.500792
iter 13 value -4.500793
iter 14 value -4.500793
iter 14 value -4.500793
iter 14 value -4.500793
final value -4.500793
converged
initial value -4.500762
iter 2 value -4.500768
iter 3 value -4.500777
iter 4 value -4.500778
iter 5 value -4.500778
iter 6 value -4.500780
iter 7 value -4.500781
iter 8 value -4.500781
iter 8 value -4.500781
final value -4.500781
converged
$fit
Call:
arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S),
xreg = constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc,
REPORT = 1, reltol = tol))
Coefficients:
ar1 ma1 constant
0.4412 -0.3052 0.0076
s.e. 0.2101 0.2191 0.0008
sigma^2 estimated as 0.0001232: log likelihood = 939.96, aic = -1871.92
$degrees_of_freedom
[1] 302
$ttable
Estimate SE t.value p.value
ar1 0.4412 0.2101 2.1002 0.0365
ma1 -0.3052 0.2191 -1.3930 0.1646
constant 0.0076 0.0008 9.6004 0.0000
$AIC
[1] -6.137455
$AICc
[1] -6.137194
$BIC
[1] -6.088664
**************************************************************************
auto.arima (0,2,3)(1,0,1)[4]:
initial value -4.209452
iter 2 value -4.384929
iter 3 value -4.442731
iter 4 value -4.485373
iter 5 value -4.486556
iter 6 value -4.489059
iter 7 value -4.490679
iter 8 value -4.493028
iter 9 value -4.494280
iter 10 value -4.496736
iter 11 value -4.497414
iter 12 value -4.501068
iter 13 value -4.501074
iter 14 value -4.501481
iter 15 value -4.501831
iter 16 value -4.502053
iter 17 value -4.502333
iter 18 value -4.502676
iter 19 value -4.502758
iter 20 value -4.502770
iter 21 value -4.502770
iter 21 value -4.502770
iter 21 value -4.502770
final value -4.502770
converged
initial value -4.497003
iter 2 value -4.497051
iter 3 value -4.497159
iter 4 value -4.497198
iter 5 value -4.497207
iter 6 value -4.497209
iter 6 value -4.497209
iter 6 value -4.497209
final value -4.497209
converged
$fit
Call:
arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S),
include.mean = !no.constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc,
REPORT = 1, reltol = tol))
Coefficients:
ma1 ma2 ma3 sar1 sma1
-0.8748 -0.0010 -0.1093 -0.6082 0.5539
s.e. 0.0572 0.0756 0.0562 0.3597 0.3727
sigma^2 estimated as 0.0001227: log likelihood = 935.79, aic = -1859.59
$degrees_of_freedom
[1] 299
$ttable
Estimate SE t.value p.value
ma1 -0.8748 0.0572 -15.2823 0.0000
ma2 -0.0010 0.0756 -0.0137 0.9891
ma3 -0.1093 0.0562 -1.9463 0.0526
sar1 -0.6082 0.3597 -1.6908 0.0919
sma1 0.5539 0.3727 1.4861 0.1383
$AIC
[1] -6.117068
$AICc
[1] -6.116405
$BIC
[1] -6.043705
**************************************************************************
Series: ts
ARIMA(1,1,1)
Coefficients:
ar1 ma1
0.9997 -0.9836
s.e. 0.0006 0.0103
sigma^2 = 0.0001276: log likelihood = 934.67
AIC=-1863.34 AICc=-1863.26 BIC=-1852.18
Training set error measures:
ME RMSE MAE MPE MAPE
Training set -0.0001737751 0.01123841 0.007111044 -0.001027974 0.08112324
MASE ACF1
Training set 0.2069521 0.1241003
Equation for ARIMA(1,1,1):
\[(1 - \phi B)(1 - B)X_t = (1 + \theta B)W_t\]
Forecasting
The forecast shows a projected increase in the log-transformed GDP, with historical data indicating a good model fit. The widening confidence intervals suggest greater uncertainty in the longer term. While useful for economic planning, these predictions rely on past trends continuing unchanged and may not account for unforeseen economic events.
Benchmark Method
The ARIMA model seems to closely follow the actual trend, along with the Drift model. The other models—Mean, Naive, and Seasonal Naive—diverge from the actual trend as time progresses, indicating less accuracy.
From the accuracy metrics given, the ARIMA model outperforms the others with the lowest errors across multiple measures (RMSE, MAE, MPE, MAPE, MASE, and ACF1). The Mean Model performs the worst, with the highest errors. The Naive and Seasonal Naive models also show higher errors than ARIMA but are better than the Mean Model. The Random Walk with Drift Model has metrics comparable to the ARIMA model, suggesting it is also a good fit for the data. Overall, the ARIMA and Drift models are indicated as the best for this dataset based on the provided metrics.
ARIMA Model Accuracy Metrics:
ME RMSE MAE MPE MAPE
Training set -0.0001737751 0.01123841 0.007111044 -0.001027974 0.08112324
MASE ACF1
Training set 0.2069521 0.1241003
Mean Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set 1.560046e-17 0.6856741 0.5943983 -0.6000709 6.726537 17.29873
ACF1
Training set 0.9903157
Naive Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set 0.007608786 0.01356279 0.01029104 0.08636799 0.1165192 0.2994994
ACF1
Training set 0.1336013
Seasonal Naive Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE ACF1
Training set 0.03061763 0.04003529 0.03436081 0.3470782 0.388953 1 0.798235
Random Walk with Drift Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set 3.814826e-16 0.01122745 0.0071468 0.001228953 0.08148863 0.2079927
ACF1
Training set 0.1336013
Model with the best Accuracy Metrics:
ARIMA Drift ARIMA Mean ARIMA ARIMA ARIMA
SARIMA - Treasury Security
SARIMA models are used for treasury yields like 3-month T-bills or 20-year T-bonds because they help predict the regular ups and downs that happen throughout the year. These ups and downs can be due to when the government borrows more, changes in how often people invest, and rules that banks follow at certain times. SARIMA can catch these patterns, making it easier to guess where yields will go next, which is very important for people who invest in these securities.
Data Processing
Stationarity Check
Initial assessments via ACF and Augmented Dickey-Fuller tests indicated that 3Mon T-Bill Yield required differencing due to non-stationarity. After converting to a time series, first differencing and seasonal differencing alone were insufficient in detrending, but the combination of non-seasonal and seaonal differencing indicated strong stationarity.
Augmented Dickey-Fuller Test Results:
Test Statistic: -3.318366 P-value: 0.07045011
The time series is not stationary based on the ADF test.
Model Fitting
After second differencing 3 Month T-Bill Yield, ACF shows three lags, while PACF shows four. This suggests ARIMA parameters p = [0,1,2,3], P = [2], d = [1], [D = 1], q = [0,1,2], Q = [1]. I’ll test these for the lowest AIC, BIC, and AICc, and cross-check with auto.arima to forecasting.
Minimum AIC: 1, 1, 1, 2, 1, 1, -77.5526287298902, -58.9901275250496, -77.0141671914286
Minimum BIC: 1, 1, 1, 2, 1, 1, -77.5526287298902, -58.9901275250496, -77.0141671914286
Minimum AICc: 1, 1, 1, 2, 1, 1, -77.5526287298902, -58.9901275250496, -77.0141671914286
Series: ts
ARIMA(3,1,0)(2,0,0)[4]
Coefficients:
ar1 ar2 ar3 sar1 sar2
-0.0812 -0.0820 -0.2835 -0.1593 -0.0340
s.e. 0.0814 0.0789 0.0780 0.0905 0.0897
sigma^2 = 0.03345: log likelihood = 49.13
AIC=-86.25 AICc=-85.73 BIC=-67.54
Model Diagnostics
[1] "Call:"
[2] "arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S), "
[3] " include.mean = !no.constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc, "
[4] " REPORT = 1, reltol = tol))"
[5] ""
[6] "Coefficients:"
[7] " ar1 ma1 sar1 sar2 sma1"
[8] " 0.8182 -1.0000 -0.1960 -0.1040 -0.8524"
[9] "s.e. 0.0520 0.0256 0.0993 0.0982 0.0615"
[10] ""
[11] "sigma^2 estimated as 0.03124: log likelihood = 44.78, aic = -77.55"
[12] ""
[13] "$degrees_of_freedom"
[14] "[1] 158"
[15] ""
[16] "$ttable"
[17] " Estimate SE t.value p.value"
[18] "ar1 0.8182 0.0520 15.7209 0.0000"
[19] "ma1 -1.0000 0.0256 -39.1200 0.0000"
[20] "sar1 -0.1960 0.0993 -1.9733 0.0502"
[21] "sar2 -0.1040 0.0982 -1.0593 0.2911"
[22] "sma1 -0.8524 0.0615 -13.8632 0.0000"
[23] ""
[24] "$AIC"
[25] "[1] -0.475783"
[26] ""
[27] "$AICc"
[28] "[1] -0.4734384"
[29] ""
[30] "$BIC"
[31] "[1] -0.3619026"
[1] "Call:"
[2] "arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S), "
[3] " xreg = constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc, "
[4] " REPORT = 1, reltol = tol))"
[5] ""
[6] "Coefficients:"
[7] " ar1 ar2 ar3 sar1 sar2 constant"
[8] " -0.0871 -0.0869 -0.2877 -0.1652 -0.0364 0.0067"
[9] "s.e. 0.0816 0.0790 0.0780 0.0908 0.0896 0.0080"
[10] ""
[11] "sigma^2 estimated as 0.03231: log likelihood = 49.47, aic = -84.94"
[12] ""
[13] "$degrees_of_freedom"
[14] "[1] 161"
[15] ""
[16] "$ttable"
[17] " Estimate SE t.value p.value"
[18] "ar1 -0.0871 0.0816 -1.0681 0.2871"
[19] "ar2 -0.0869 0.0790 -1.0994 0.2733"
[20] "ar3 -0.2877 0.0780 -3.6873 0.0003"
[21] "sar1 -0.1652 0.0908 -1.8203 0.0706"
[22] "sar2 -0.0364 0.0896 -0.4065 0.6849"
[23] "constant 0.0067 0.0080 0.8386 0.4029"
[24] ""
[25] "$AIC"
[26] "[1] -0.5086453"
[27] ""
[28] "$AICc"
[29] "[1] -0.5055015"
[30] ""
[31] "$BIC"
[32] "[1] -0.3779509"
Series: ts
ARIMA(1,1,1)(2,1,1)[4]
Coefficients:
ar1 ma1 sar1 sar2 sma1
0.8182 -1.0000 -0.1960 -0.1040 -0.8524
s.e. 0.0520 0.0256 0.0993 0.0982 0.0615
sigma^2 = 0.03223: log likelihood = 44.78
AIC=-77.55 AICc=-77.01 BIC=-58.99
Training set error measures:
ME RMSE MAE MPE MAPE MASE
Training set -0.01547569 0.1740971 0.1211176 37.62815 140.1717 0.5557939
ACF1
Training set -0.009057403
Equation for SARIMA(1,1,1)(2,1,1)[4]:
\[(1 - \phi B)(1 - B)(1 - \Phi_1 B^s)(1 - \Phi_2 B^{2s})(1 - B^s)X_t = (1 + \theta B)(1 + \Theta_1 B^s)W_t\]
Forecasting
Benchmark Method
SARIMA Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set -0.01547569 0.1740971 0.1211176 37.62815 140.1717 0.5557939
ACF1
Training set -0.009057403
Mean Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set -1.183749e-17 0.3317336 0.2505159 3.214205 311.7334 1.149587
ACF1
Training set 0.8236012
Naive Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set 0.006370865 0.188809 0.1231996 17.7233 112.8604 0.565348
ACF1
Training set -0.02926909
Seasonal Naive Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE ACF1
Training set 0.0353719 0.3282686 0.2179181 59.57998 334.7433 1 0.6614068
Random Walk with Drift Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set 2.94903e-17 0.1887014 0.1234148 20.7863 112.9409 0.5663355
ACF1
Training set -0.02926909
Model with the best Accuracy Metrics:
SARIMA SARIMA SARIMA Mean Naive SARIMA Drift
Cross Validation
One-Step Ahead Cross Validation
Model 1 - MAE: 0.09014297 MSE: 0.01947199
Model 2 - MAE: 0.0967174 MSE: 0.02260441
Model 1 performs better on both MAE and MSE.
Data Processing
Stationarity Check
Augmented Dickey-Fuller Test Results:
Test Statistic: -3.805526 P-value: 0.02041494
The time series is stationary based on the ADF test.
Model Fitting
Minimum AIC: 2, 1, 2, 2, 1, 1, -0.473054691655761, 24.2769469147983, 0.462010243409175
Minimum BIC: 1, 1, 1, 2, 1, 1, 5.03140449969021, 23.5939057045308, 5.56986603815175
Minimum AICc: 2, 1, 2, 2, 1, 1, -0.473054691655761, 24.2769469147983, 0.462010243409175
Series: ts
ARIMA(0,1,0)(2,0,0)[4]
Coefficients:
sar1 sar2
-0.2138 -0.2045
s.e. 0.0909 0.0933
sigma^2 = 0.05475: log likelihood = 6.38
AIC=-6.75 AICc=-6.61 BIC=2.6
Model Diagnostics
[1] "initial value -1.584642 "
[2] "iter 2 value -1.628709"
[3] "iter 3 value -1.628981"
[4] "iter 4 value -1.629047"
[5] "iter 5 value -1.629047"
[6] "iter 6 value -1.629047"
[7] "iter 6 value -1.629047"
[8] "iter 6 value -1.629047"
[9] "final value -1.629047 "
[10] "converged"
[11] "initial value -1.454586 "
[12] "iter 2 value -1.457024"
[13] "iter 3 value -1.457204"
[14] "iter 4 value -1.457212"
[15] "iter 5 value -1.457212"
[16] "iter 5 value -1.457212"
[17] "iter 5 value -1.457212"
[18] "final value -1.457212 "
[19] "converged"
[20] "$fit"
[21] ""
[22] "Call:"
[23] "arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S), "
[24] " xreg = constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc, "
[25] " REPORT = 1, reltol = tol))"
[26] ""
[27] "Coefficients:"
[28] " sar1 sar2 constant"
[29] " -0.2142 -0.2046 0.0022"
[30] "s.e. 0.0910 0.0933 0.0128"
[31] ""
[32] "sigma^2 estimated as 0.05408: log likelihood = 6.39, aic = -4.78"
[33] ""
[34] "$degrees_of_freedom"
[35] "[1] 164"
[36] ""
[37] "$ttable"
[38] " Estimate SE t.value p.value"
[39] "sar1 -0.2142 0.0910 -2.3553 0.0197"
[40] "sar2 -0.2046 0.0933 -2.1921 0.0298"
[41] "constant 0.0022 0.0128 0.1753 0.8611"
[42] ""
[43] "$AIC"
[44] "[1] -0.02864336"
[45] ""
[46] "$AICc"
[47] "[1] -0.02776168"
[48] ""
[49] "$BIC"
[50] "[1] 0.04603913"
[51] ""
[1] "initial value -1.153352 "
[2] "iter 2 value -1.432400"
[3] "iter 3 value -1.542238"
[4] "iter 4 value -1.556935"
[5] "iter 5 value -1.578526"
[6] "iter 6 value -1.583659"
[7] "iter 7 value -1.586425"
[8] "iter 8 value -1.588110"
[9] "iter 9 value -1.590271"
[10] "iter 10 value -1.592138"
[11] "iter 11 value -1.594681"
[12] "iter 12 value -1.596694"
[13] "iter 13 value -1.601751"
[14] "iter 14 value -1.604679"
[15] "iter 15 value -1.610029"
[16] "iter 16 value -1.614741"
[17] "iter 17 value -1.614838"
[18] "iter 18 value -1.615068"
[19] "iter 19 value -1.615308"
[20] "iter 20 value -1.616168"
[21] "iter 21 value -1.618286"
[22] "iter 22 value -1.619779"
[23] "iter 23 value -1.621335"
[24] "iter 24 value -1.622036"
[25] "iter 25 value -1.623285"
[26] "iter 26 value -1.623420"
[27] "iter 27 value -1.623546"
[28] "iter 28 value -1.623566"
[29] "iter 29 value -1.623567"
[30] "iter 30 value -1.623567"
[31] "iter 31 value -1.623568"
[32] "iter 31 value -1.623568"
[33] "final value -1.623568 "
[34] "converged"
[35] "initial value -1.411246 "
[36] "iter 2 value -1.417760"
[37] "iter 3 value -1.423349"
[38] "iter 4 value -1.424629"
[39] "iter 5 value -1.427692"
[40] "iter 6 value -1.428452"
[41] "iter 7 value -1.428780"
[42] "iter 8 value -1.428960"
[43] "iter 9 value -1.429343"
[44] "iter 10 value -1.429644"
[45] "iter 11 value -1.429796"
[46] "iter 12 value -1.429901"
[47] "iter 13 value -1.429961"
[48] "iter 14 value -1.430077"
[49] "iter 15 value -1.430343"
[50] "iter 16 value -1.430785"
[51] "iter 17 value -1.431139"
[52] "iter 18 value -1.431454"
[53] "iter 19 value -1.432390"
[54] "iter 20 value -1.433279"
[55] "iter 21 value -1.434767"
[56] "iter 22 value -1.435427"
[57] "iter 23 value -1.438964"
[58] "iter 24 value -1.445525"
[59] "iter 25 value -1.445894"
[60] "iter 26 value -1.446931"
[61] "iter 27 value -1.447249"
[62] "iter 28 value -1.447332"
[63] "iter 29 value -1.447346"
[64] "iter 30 value -1.447347"
[65] "iter 31 value -1.447347"
[66] "iter 32 value -1.447350"
[67] "iter 33 value -1.447354"
[68] "iter 34 value -1.447372"
[69] "iter 35 value -1.447480"
[70] "iter 36 value -1.447707"
[71] "iter 37 value -1.447878"
[72] "iter 38 value -1.448033"
[73] "iter 39 value -1.448932"
[74] "iter 40 value -1.449332"
[75] "iter 41 value -1.449415"
[76] "iter 42 value -1.449518"
[77] "iter 43 value -1.449574"
[78] "iter 44 value -1.449704"
[79] "iter 45 value -1.449988"
[80] "iter 46 value -1.450732"
[81] "iter 47 value -1.451444"
[82] "iter 48 value -1.453977"
[83] "iter 49 value -1.459680"
[84] "iter 50 value -1.460383"
[85] "iter 51 value -1.462770"
[86] "iter 52 value -1.463032"
[87] "iter 53 value -1.463517"
[88] "iter 54 value -1.463604"
[89] "iter 55 value -1.463778"
[90] "iter 56 value -1.464020"
[91] "iter 57 value -1.464266"
[92] "iter 58 value -1.464640"
[93] "iter 59 value -1.465612"
[94] "iter 60 value -1.466519"
[95] "iter 61 value -1.467018"
[96] "iter 62 value -1.469013"
[97] "iter 63 value -1.469387"
[98] "iter 64 value -1.469429"
[99] "iter 65 value -1.469440"
[100] "iter 66 value -1.469459"
[101] "iter 67 value -1.469461"
[102] "iter 68 value -1.469465"
[103] "iter 69 value -1.469466"
[104] "iter 70 value -1.469467"
[105] "iter 71 value -1.469467"
[106] "iter 72 value -1.469467"
[107] "iter 73 value -1.469467"
[108] "iter 74 value -1.469467"
[109] "iter 75 value -1.469467"
[110] "iter 76 value -1.469468"
[111] "iter 77 value -1.469468"
[112] "iter 78 value -1.469469"
[113] "iter 79 value -1.469469"
[114] "iter 80 value -1.469469"
[115] "iter 80 value -1.469469"
[116] "iter 80 value -1.469469"
[117] "final value -1.469469 "
[118] "converged"
[119] "$fit"
[120] ""
[121] "Call:"
[122] "arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S), "
[123] " include.mean = !no.constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc, "
[124] " REPORT = 1, reltol = tol))"
[125] ""
[126] "Coefficients:"
[127] " ar1 ar2 ma1 ma2 sar1 sar2 sma1"
[128] " -0.1820 0.8030 -0.1146 -0.8854 -0.2283 -0.2178 -0.9541"
[129] "s.e. 0.0611 0.0563 0.0685 0.0667 0.0991 0.0979 0.0638"
[130] ""
[131] "sigma^2 estimated as 0.04746: log likelihood = 8.24, aic = -0.47"
[132] ""
[133] "$degrees_of_freedom"
[134] "[1] 156"
[135] ""
[136] "$ttable"
[137] " Estimate SE t.value p.value"
[138] "ar1 -0.1820 0.0611 -2.9789 0.0034"
[139] "ar2 0.8030 0.0563 14.2623 0.0000"
[140] "ma1 -0.1146 0.0685 -1.6739 0.0961"
[141] "ma2 -0.8854 0.0667 -13.2651 0.0000"
[142] "sar1 -0.2283 0.0991 -2.3029 0.0226"
[143] "sar2 -0.2178 0.0979 -2.2244 0.0276"
[144] "sma1 -0.9541 0.0638 -14.9487 0.0000"
[145] ""
[146] "$AIC"
[147] "[1] -0.002902176"
[148] ""
[149] "$AICc"
[150] "[1] 0.001530834"
[151] ""
[152] "$BIC"
[153] "[1] 0.1489383"
[154] ""
[1] "initial value -1.156609 "
[2] "iter 2 value -1.448236"
[3] "iter 3 value -1.503849"
[4] "iter 4 value -1.521930"
[5] "iter 5 value -1.561078"
[6] "iter 6 value -1.589149"
[7] "iter 7 value -1.596845"
[8] "iter 8 value -1.597994"
[9] "iter 9 value -1.598385"
[10] "iter 10 value -1.598396"
[11] "iter 11 value -1.598402"
[12] "iter 12 value -1.598495"
[13] "iter 13 value -1.598515"
[14] "iter 14 value -1.598521"
[15] "iter 15 value -1.598526"
[16] "iter 16 value -1.598527"
[17] "iter 17 value -1.598532"
[18] "iter 18 value -1.598544"
[19] "iter 19 value -1.598552"
[20] "iter 20 value -1.598555"
[21] "iter 21 value -1.598555"
[22] "iter 21 value -1.598555"
[23] "iter 21 value -1.598555"
[24] "final value -1.598555 "
[25] "converged"
[26] "initial value -1.373356 "
[27] "iter 2 value -1.380275"
[28] "iter 3 value -1.418737"
[29] "iter 4 value -1.420191"
[30] "iter 5 value -1.422171"
[31] "iter 6 value -1.422187"
[32] "iter 7 value -1.422236"
[33] "iter 8 value -1.422535"
[34] "iter 9 value -1.422801"
[35] "iter 10 value -1.423264"
[36] "iter 11 value -1.423836"
[37] "iter 12 value -1.425616"
[38] "iter 13 value -1.427219"
[39] "iter 14 value -1.428113"
[40] "iter 15 value -1.428671"
[41] "iter 16 value -1.428859"
[42] "iter 17 value -1.436250"
[43] "iter 18 value -1.437695"
[44] "iter 19 value -1.438645"
[45] "iter 20 value -1.438726"
[46] "iter 21 value -1.438753"
[47] "iter 22 value -1.438826"
[48] "iter 23 value -1.438963"
[49] "iter 24 value -1.439319"
[50] "iter 25 value -1.439923"
[51] "iter 26 value -1.440203"
[52] "iter 27 value -1.440304"
[53] "iter 28 value -1.440312"
[54] "iter 29 value -1.440312"
[55] "iter 30 value -1.440312"
[56] "iter 31 value -1.440312"
[57] "iter 32 value -1.440312"
[58] "iter 33 value -1.440313"
[59] "iter 34 value -1.440313"
[60] "iter 35 value -1.440314"
[61] "iter 36 value -1.440314"
[62] "iter 37 value -1.440315"
[63] "iter 38 value -1.440315"
[64] "iter 38 value -1.440315"
[65] "iter 38 value -1.440315"
[66] "final value -1.440315 "
[67] "converged"
[68] "$fit"
[69] ""
[70] "Call:"
[71] "arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D, Q), period = S), "
[72] " include.mean = !no.constant, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc, "
[73] " REPORT = 1, reltol = tol))"
[74] ""
[75] "Coefficients:"
[76] " ar1 ma1 sar1 sar2 sma1"
[77] " -0.9902 0.8509 -0.2971 -0.2563 -0.9561"
[78] "s.e. 0.0226 0.0712 0.0916 0.0946 0.0585"
[79] ""
[80] "sigma^2 estimated as 0.05234: log likelihood = 3.48, aic = 5.03"
[81] ""
[82] "$degrees_of_freedom"
[83] "[1] 158"
[84] ""
[85] "$ttable"
[86] " Estimate SE t.value p.value"
[87] "ar1 -0.9902 0.0226 -43.8806 0.0000"
[88] "ma1 0.8509 0.0712 11.9567 0.0000"
[89] "sar1 -0.2971 0.0916 -3.2442 0.0014"
[90] "sar2 -0.2563 0.0946 -2.7084 0.0075"
[91] "sma1 -0.9561 0.0585 -16.3309 0.0000"
[92] ""
[93] "$AIC"
[94] "[1] 0.03086751"
[95] ""
[96] "$AICc"
[97] "[1] 0.03321209"
[98] ""
[99] "$BIC"
[100] "[1] 0.1447479"
[101] ""
Series: ts
ARIMA(2,1,2)(2,1,1)[4]
Coefficients:
ar1 ar2 ma1 ma2 sar1 sar2 sma1
-0.1820 0.8030 -0.1146 -0.8854 -0.2283 -0.2178 -0.9541
s.e. 0.0611 0.0563 0.0685 0.0667 0.0991 0.0979 0.0638
sigma^2 = 0.04959: log likelihood = 8.24
AIC=-0.47 AICc=0.46 BIC=24.28
Training set error measures:
ME RMSE MAE MPE MAPE MASE
Training set 0.004070017 0.2145945 0.1528131 104.5816 243.6773 0.5254351
ACF1
Training set 0.0078855
Equation for SARIMA(2,1,2)(2,1,1)[4]:
\[(1 - \phi_1 B - \phi_2 B^2)(1 - B)(1 - \Phi_1 B^s - \Phi_2 B^{2s})(1 - B^s)X_t = (1 + \theta_1 B + \theta_2 B^2)(1 + \Theta_1 B^s)W_t\]
Forecasting
Benchmark Method
SARIMA Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set 0.004070017 0.2145945 0.1528131 104.5816 243.6773 0.5254351
ACF1
Training set 0.0078855
Mean Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set 8.108929e-19 0.3310926 0.2327435 161.2462 176.9307 0.8002689
ACF1
Training set 0.7392247
Naive Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set 0.002112496 0.2387966 0.158006 47.22492 225.3856 0.5432904
ACF1
Training set -0.1433554
Seasonal Naive Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE ACF1
Training set 0.01693984 0.4100165 0.2908316 240.2875 374.3727 1 0.6545677
Random Walk with Drift Model Accuracy Metrics:
ME RMSE MAE MPE MAPE MASE
Training set -3.941913e-17 0.2387872 0.1581026 42.26205 229.5025 0.5436225
ACF1
Training set -0.1433554
Model with the best Accuracy Metrics:
Drift SARIMA SARIMA Drift Mean SARIMA Drift
Cross Validation
One-Step Ahead Cross Validation
Model 1 - MAE: 0.132274 MSE: 0.03496468
Model 2 - MAE: 0.1428235 MSE: 0.03843426
Model 1 performs better on both MAE and MSE.